Systems and methods for the comparison of selected text

ABSTRACT

Systems and methods are disclosed for comparing selections of text to show differences between the two selections. The text may be selected from the same source or from two different sources. In one implementation, a system receives a first selection of text for comparison and places the selection in a first buffer. The system receives a second selection of text for comparison and places the second selection in a second buffer. The system compares the first buffer and the second buffer to determine differences and displays the differences. In some embodiments, the system may allow a user to choose two buffers from among a plurality of buffers for comparison.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/113,590, filed on Dec. 7, 2020, now allowed, which is a continuationof U.S. patent application Ser. No. 14/697,889, filed on Apr. 28, 2015,which issued as U.S. Pat. No. 10,891,418 on Jan. 12, 2021, which is acontinuation of U.S. patent application Ser. No. 13/223,861, filed onSep. 1, 2011, which issued as U.S. Pat. No. 9,047,258 on Jun. 2, 2015,each of which is hereby incorporated by reference in the presentapplication.

TECHNICAL FIELD

This disclosure generally relates to the comparison of text selectionsand more particularly, to methods and systems for comparing selectedtext of a single file or of two files of differing types, and othernon-conventional text comparison sources.

BACKGROUND

Conventional document comparison programs, such as Workshare™Professional or Deltaview, SoftInterface® Diff Doc™, DocsCorpcompareDocs, and Esquire Innovations iRedline, compare differencesbetween two documents (e.g., word processing documents, spreadsheetdocuments, presentation documents, etc.), a task formerly reservedsolely for humans. These programs identify and ascertain differencesfrom the entirety of an original (first) and modified (second) documentand display those differences in a third document, commonly referred toas a redline document.

These conventional document comparison programs fail to offer theability to compare text from within the same document (such as anemail), to compare text from different types of documents (such as aword document and a power point presentation), or to compare the text oftwo web pages or two email messages. Rather, when using the conventionalprograms, a reader must perform the cumbersome steps of selecting andcopying the text from the source file, pasting the selected text into anew document, and repeating the copying and pasting for the secondsource so that the conventional program can then run the comparisonprocess. This method is inefficient, burdensome, and a potential sourceof errors.

SUMMARY

Disclosed embodiments provide computer-based file comparison systems andmethods that enable the comparison of selections of text, from within asingle file or from various sources, without the need for a copy andpaste operation by the user. Consistent with disclosed embodiments, asystem is provided for comparing text. In one aspect, the systemincludes a processor and a memory. The memory may include instructionsthat cause the processor to receive a first text selection and a secondtext selection for comparison. The memory may further includeinstructions that cause the processor to place the first text selectionin a first buffer and the second text selection in a second buffer. Thememory may further include instructions that cause the processor tocompare the first text selection of the first buffer with the secondtext selection of the second buffer to determine differences, and maygenerate data used to display the differences, if any. The first textselection and the second text selection may be from the same source orfrom different sources. The sources may also be of different file types.

Consistent with disclosed embodiments, a method is provided forcomparing selections of text. In one aspect, the method includesreceiving a first selection of text and placing the first selection oftext into a first buffer. The method may further include receiving asecond selection of text and placing the second selection of text into asecond buffer. The method may further determine differences between thefirst buffer and the second buffer and generate data used to display thedifferences.

Consistent with other disclosed embodiments, tangible computer-readablestorage media may store program instructions that are executable by aprocessor to implement one or more of the methods disclosed herein.

The foregoing general description and the following detailed descriptionare exemplary and explanatory only and are not restrictive of thedisclosed embodiments, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate several embodiments and togetherwith the description, serve to explain disclosed principles of comparingtext selections. In the drawings:

FIG. 1 is a diagram of exemplary system components that may be used toimplement disclosed embodiments;

FIG. 2 is a flow diagram illustrating an exemplary text selection andcomparison process, consistent with disclosed embodiments;

FIG. 3 is an example of an email chain, consistent with disclosedembodiments;

FIGS. 4 and 5 are exemplary text selection interfaces used to selecttext for comparison, consistent with disclosed embodiments;

FIG. 6 is an example of a comparison output interface displayingdifferences between text selections, consistent with disclosedembodiments; and

FIG. 7 is an example of an interface for selecting two buffers thatcontain selected text for comparison, consistent with disclosedembodiments.

DESCRIPTION OF THE EMBODIMENTS

The disclosed embodiments may enable a user to more easily compareselected text from within the same source file or from different sourcefiles. Text may include any type of data stored and displayed by one ormore computers, including binary computer code, ASCII characters,glyphs, logograms such as han characters, etc. In one aspect, a user ora computer process executing software may simply select text from thetwo files and facilitate a comparison through selection of a comparisonoperator. Thus, disclosed embodiments eliminate the cumbersome stepsthat a user must currently perform, such as having to select, copy, andpaste each text selection into a new word processing document beforeperforming a comparison. Disclosed embodiments also allow comparison oftext from various sources, such as word processing documents,spreadsheets, PDF documents, presentations, emails, web pages, textfiles, etc.

Reference will now be made in detail to exemplary embodiments, examplesof which are illustrated in the accompanying drawings. Whereverconvenient, the same reference numbers will be used throughout thedrawings to refer to the same or like parts.

FIG. 1 is a diagram of an exemplary system 100 that may be used toimplement one or more disclosed embodiments. The components andarrangement of system 100 may vary, and are not limited to thatillustrated in FIG. 1 . In accordance with certain disclosedembodiments, computer system 100 may include a processor 105, storage110, memory 115, operating system 120, input/output (I/O) devices 125,and bus 135. In one embodiment, memory 115 may include selected textcomparison application 130 and other applications 140. In one example,selected text comparison application 130 may be software andapplications 140 may be other software. In one embodiment, selected textcomparison application 130 may be a stand-alone application or may beincorporated into one or more other applications 140. Selected textcomparison application 130 may reside in memory 115, and may be loadedfrom storage 110 or from other external tangible storage medium (notshown) through I/O devices 125. Instructions in selected text comparisonapplication 130 may be executed by one or more processors, such asprocessor 105, to perform features consistent with one or more disclosedembodiments.

Computer system 100 may be a general purpose or notebook computer, amobile device with computing ability, a tablet computer, a smart phone,a server, a mainframe computer, or any other type of computer orcombination of computers and/or affiliated components. Computer system100 may communicate with a network 150 through I/O devices 125. Forexample, computer system 100 may establish a communication link withnetwork 150, such as through a wireless or wired LAN, a WAN, or othersuitable connection that enables computer system 100 to send and receiveinformation, as described herein. Computer system 100 may be astandalone system or may be part of a subsystem, which may, in turn, bepart of a larger system, such as a networked desktop emulator. Computersystem 100 may be accessible to a user locally, or may be available to auser over the Internet or other type of network.

Processor 105 may be one or more known or later created processingdevices, such as a microprocessor from the Pentium™ family manufacturedby Intel™ or the Turion™ family manufactured by AMD™. Memory 115 may beone or more storage devices configured to store information used byprocessor 105 to perform certain functions related to disclosedembodiments. Storage 110 may be a volatile or non-volatile, magnetic,semiconductor, tape, optical, removable, nonremovable, or other type ofstorage device or tangible computer-readable medium.

In one embodiment, memory 115 may include selected text comparisonapplication 130 that, when executed by a processor, such as processor105, may enable the selection of text for comparison, the comparison ofthe selected text, and the generation of data used to display theresults of the comparison. Selected text comparison application 130 maybe part of an application that compares files, may be a stand-aloneapplication or applet, or may be run as a sub program (i.e. a childapplication) of application 140, such as a word processing applicationor an Internet browser application, which may provide for editing orviewing of files. Memory 115 may also include an integrative supportprogram that links the applications and allows them to use a commondatabase, provides a common user interface, performs basic bookkeepingtasks, (such as storing the user's input, etc.), and provides userguidance and help. Memory 115 may also include other programs thatperform other functions and processes, such as programs that providecommunication support, Internet access, etc.

Methods, systems, and articles of manufacture consistent with disclosedembodiments are not limited to separate programs or computers configuredto perform dedicated tasks. For example, memory 115 may be configuredwith selected text comparison application 130, which performs one ormore functions when executed by processor 105. Alternatively, memory 115may include multiple programs that collectively perform one or morefunctions of selected text comparison application 130. Moreover,processor 105 may execute one or more programs located remotely fromsystem 100. For example, system 100 may access one or more remoteprograms that, when executed, perform one or more functions of selectedtext comparison application 130.

Memory 115 may be also be configured with operating system 120 thatperforms known operating system functions when executed by system 100.By way of example, operating system 120 may include Microsoft Windows™,Unix™, Linux™, Apple™ Computers type operating systems, Personal DigitalAssistant (PDA) type operating systems, such as Microsoft CE™, or othertypes of operating systems. Accordingly, embodiments of the disclosedinvention will operate and function with computer systems running anytype of operating system.

I/O devices 125 may comprise one or more input devices and one or moreoutput devices that allow data to be received and/or transmitted bysystem 100. For example, I/O devices 125 may include one or more inputdevices, such as a keyboard, a touch screen, a mouse, and the like, thatenable system 100 to receive data from a user, such as selections oftext, for comparison. Further, system 100 may include I/O devices 125that communicate with one or more output devices, such as a displayscreen, a CRT monitor, an LCD monitor, a plasma display, a printer, andspeaker devices, that enable system 100 to present data, such as acomparison output file, to a user. I/O devices 125 may also include oneor more digital and/or analog communication input/output devices thatallow system 100 to communicate with other machines and devices,including other machines and devices connected to network 150. Theconfiguration and number of input and/or output devices incorporated inI/O devices 125 may vary as appropriate for certain embodiments.

Computer system 100 may also be communicatively connected to one or moredatabases 145 locally or through network 150. Databases 145 may storeinformation and may be accessed and/or managed through system 100. Byway of example, databases 145 may be Microsoft SQL databases, SharePointdatabases, Oracle™ databases, Sybase™ databases, or other databases.Databases 145 may include, for example, data and information related tosettings used by selected text comparison application 130. Systems andmethods of disclosed embodiments, however, are not limited to separatedatabases or even to the use of a database.

FIG. 2 is a flow diagram illustrating an exemplary text selection andcomparison process 200, consistent with disclosed embodiments. Incertain embodiments, process 200 may be performed by selected textcomparison application 130 when executed by processor, such as processor105. Process 200 may be used to identify text for comparison, to storethe identified text in a buffer, to allow a user to choose two textselections stored in the buffers for comparison, and to initiate acomparison upon the selected text.

In Step 205, selected text comparison application 130 may receive atleast two selections of text. The text may be selected from any type offile, such as a document, a spreadsheet, a text file, an image, adatabase, a temporary buffer, a web-page, an email, a PDF file, or anyother type of file or structure used to store text. The source of thetext selection may include any data output to an output device (e.g., ascreen) of computer system 100, or the source may be a file accessibleby system 100. A text selection may include a portion or all of the fulltext contained in the file.

In one embodiment, a user may select the text using any known method oftext selection, including but not limited to, placing a cursor at thebeginning of the text, pressing and holding a mouse button, dragging thecursor to the end of the text, and releasing the mouse button.Alternatively, a user may select text using other mechanisms, such asthrough voice commands, menu selections, touch screen selections, etc.Selected text comparison application 130 may then receive an indicationto initiate a comparison operation. In one embodiment, selected textcomparison application 130 may receive an indication that a user desiresto use the selected text in a comparison operation through an interface.In some embodiments, the interface may be a menu option that appearswhen the user completes the selection of text, such as when the userreleases a mouse button or clicks on the selected text. In otherembodiments, the interface may be an option in a parent application.Selected text comparison application 130 may receive the text selectionthrough the interface.

The source from which a user selects text may be the contents of a filedisplayed on an output device of system 100, the contents of a filelocated on a system accessible to system 100 over network 150, or acombination of these.

In Step 210, selected text comparison application 130 may create atemporary buffer to hold each text selection received from the user andplace the selected text in the buffer. A temporary buffer may be anytype of temporary computer storage, including a file or a memory array,used to store the selected text. The clipboard feature used in theMicrosoft Windows™ operating system is an example of a temporary buffer.In some embodiments, selected text comparison application 130 may trackinformation about each buffer so that, for example, selected textcomparison application 130 can display the source of the text within thebuffer and/or the time that the text selection was received. The bufferscreated by selected text comparison application 130 may continue to beavailable to the user for comparison until they are deleted. In Step215, selected text comparison application 130 may receive a request toinitiate a comparison of the text selections. The request may beinitiated by a user or by a computer process in an automated fashion.

In Step 220, selected text comparison application 130 may determinewhether more than two buffers with selected text exist. If only twobuffers exist (Step 220, No), selected text comparison application 130may begin the comparison of the contents of the two buffers in Step 230.However, if more than two buffers exist (Step 220, Yes) then, in Step225, selected text comparison application 130 may create a display ofthe buffers and allow the user to select two text selections associatedwith two buffers for comparison. For example, selected text comparisonapplication 130 may create an interface used to display the availabletext selections (buffers) and allow a user to choose two. In someembodiments, the interface may include a portion of the text of eachbuffer, the source of the text contained in the buffer, the time thetext was selected, etc.

Although FIG. 2 describes a process for selecting two buffers, disclosedembodiments may include selection of more than two buffers when textselection comparison application 130 is capable of comparing more thantwo input files. For example, in such embodiments at step 220, selectedtext comparison application 130 may determine whether more than threebuffers exist. In other such embodiments, selected text comparisonapplication 130 may allow the user to choose whether to compare twofiles or three files when more than three buffers exist.

In Step 230, selected text comparison application 130 may receive aselection of two of the buffers. In one embodiment, a user may select abuffer by clicking on a representation of the buffer, checking a box ora radio button next to a representation of the buffer, or through anyother method that enables selection by a user of data displayed on anoutput device.

In Step 235, selected text comparison application 130 may compare theselected text associated with the two buffers. In one aspect, computersystem 100 (or any other computer system or processor) may execute afile comparison process to compare the text of the two buffers. The filecomparison process may be part of selected text comparison application130, part of application 140, or a process located remotely from system100. For example, in some embodiments, selected text comparisonapplication 130 may send the text of the two selected buffers to aremote comparison process located, for example, on a server, and mayreceive the results of the comparison operation from the server. Inother embodiments, selected text comparison application 130 may performthe comparison and generate the results of the comparison operation.

In Step 240 selected text comparison application 130 may generateinformation that allows a user to view the differences between the twotext selections (i.e. the contents of the two buffers). In oneembodiment, the differences may be displayed such that text in the firstselection but not the second selection shows as deleted and text in thesecond selection but not in the first selection shows as inserted. Themanner in which differences in the text selections is detected can varyand is not limited to the one example disclosed. Process 200 may thenend, having created information used to show differences in twoselections of text.

An example of an exemplary text selection and comparison processconsistent with disclosed embodiments is explained in connection withFIGS. 3 through 7 . In this example, a user selects two portions of textfrom within the same file for comparison. One of ordinary skill in theart will realize, however, that the selected text may come from twodifferent files or two different types of files. For example, the textselections may reside in a web page and an email, two different webpages, from the same web page, from two email files, from a wordprocessing document and an email, etc. Accordingly, disclosedembodiments are not limited to the example of text selection from asingle email message, as discussed below.

In the disclosed example, a user may view an email chain displayed bysystem 100, as shown in FIG. 3 . The user may have sent an originalmessage 305 and received reply message 310. Reply message 310 maycontain edits to original message 305, but the revisions are not readilyapparent to the user. In order to easily determine what modificationshave been made to reply message 310, the user may select all or part ofthe text of reply message 310, as shown in FIG. 4 . For example, theuser may click on the text “2.8,” holding the left-mouse-button down anddragging the cursor to the end of the text at “period.” The user maythen release the left-mouse-button, causing the text to be highlightedor otherwise marked as selected. With the text selected, the user mayright-click on the selected text using the right-mouse-button. In oneembodiment, this may cause selected text comparison application 130 todisplay a menu, such as interface 400. The user may then select “Add toCompare” option 405 from interface 400. After receiving the selection ofoption 405, selected text comparison application 130 may cause theselected text of reply message 310 to be copied to a first buffer. Asdiscussed above, the first buffer may be a temporary storage areaincluding the selected text of reply message 310. In some embodiments,selected text comparison application 130 may also store the time thatthe first buffer was created and additional details about the source ofthe contents of the first buffer, such as the subject line of the emailmessage, the author of the email message, etc. In some embodiments,selected text comparison application 130 may remove interface 400 afterreceiving the selection of option 405 from interface 400.

Next, the user may select original message 305 in the manner discussedabove, or in any other manner used to select text. As shown in FIG. 5 ,the user may then right-click on the selected text, which may causeselected text comparison application 130 to display interface 400. Theuser may then select option 405, causing selected text comparisonapplication 130 to create a second buffer that includes the selectedtext of original message 305. In this example, selected text comparisonapplication 130 now has access to two buffers including selections oftext from different locations within the same source.

The user may then initiate comparison of the two text selections. Inthis example, the user may do so by selecting option 410 of interface400, as shown in FIG. 6 . In some embodiments, the user may right-clickon the previously selected text 305 to cause selected text comparisonapplication 130 to display interface 400. In other embodiments, the usermay request the comparison of the selected text through anotherinterface, such as an option in a word processing document, an applet,or another interface provided by selected text comparison application130.

Once the user indicates the selected text should be compared, selectedtext comparison application 130 may initiate the comparison of thecontents of the first buffer and the contents of the second buffer todetermine any differences. For example, the comparison may reveal that“8” has been changed to “7” and “Reseller” has been removed, as shown inFIG. 6 . Selected text comparison application 130 may generate acomparison output that reflects the result of the comparison of the twobuffers, shown as output 605 in FIG. 6 . Selected text comparisonapplication 130 may use any known technique for displaying differencesbetween the contents of files.

After the user views the comparison, the user may make additional textselections from, for example, another document or a web page. When auser makes another selection, for example by using the method describedabove, selected text comparison application 130 may add the textselected from the document or web page to a third buffer. Selected textcomparison application 130 may then allow the user to compare theselected text from the document or web page with original message 305 orreply message 310. For example, with the third buffer created, and afterthe user has chosen “compare selected” option 410, or otherwiseindicated that selected text is to be compared, selected text comparisonapplication 130 may display interface 700, shown in FIG. 7 . Interface700 may allow a user to select the first buffer 710 with the text oforiginal message 305 and the third buffer 705 with text selected fromthe document or web page. For example, the user may click on arepresentation of one of the buffers, hold the control key and click ona representation of another buffer. In other embodiments, interface 700may provide a check box, a radio button, etc., that a user may select toindicate which of the two buffers are selected. Any type of mechanismmay be implemented to enable selection of one or more bufferrepresentations. Selected text comparison application 130 may thencompare the text contained in the two selected buffers and create adisplay of the comparison results, as described above.

The foregoing descriptions have been presented for purposes ofillustration and description. They are not exhaustive and do not limitthe disclosed embodiments to the precise form disclosed. Modificationsand variations are possible in light of the above teachings or may beacquired from practicing the disclosed embodiments. For example, thedescribed implementation includes software, but the disclosedembodiments may be implemented as a combination of hardware and softwareor in firmware. Additionally, although disclosed aspects are describedas being stored in a memory on a computer, one skilled in the art willappreciate that these aspects can also be stored on other types oftangible computer-readable media, such as secondary storage devices,like hard disks, floppy disks, a CD-ROM, or other forms of RAM or ROM.

Computer programs based on the written description and disclosed methodsare within the capabilities of one of ordinary skill in the art. Thevarious programs or program modules can be created using any of thetechniques known to one skilled in the art or can be designed inconnection with existing software. For example, program sections orprogram modules can be designed in or by means of DirectX, .NetFramework, .Net Compact Framework, Visual Basic, C, XML, Java, C++,JavaScript, HTML, HTML/AJAX, or any other now known or later createdprogramming language. One or more of such software sections or modulescan be integrated into a computer system or existing browser software.

Other embodiments will be apparent to those skilled in the art fromconsideration of the specification and practice of the embodimentsdisclosed herein. The recitations in the claims are to be interpretedbroadly based on the language employed in the claims and not limited toexamples described in the present specification or during theprosecution of the application, which examples are to be construednon-exclusive. Further, the steps of the disclosed methods may bemodified in any manner, including by reordering steps and/or insertingor deleting steps. It is intended, therefore, that the specification andexamples be considered as exemplary only, with a true scope and spiritbeing indicated by the following claims and their full scopeequivalents.

What is claimed is:
 1. A computer-based text comparison systemcomprising: a processor; and a memory coupled to the processor, thememory storing instructions to direct the processor to performoperations comprising: receiving a first selection of text from within afirst electronic file to create the first selection of text, receiving asecond selection of text from within the first electronic file or asecond electronic file to create the second selection of text, storing,separately from the first electronic file and the second electronicfile, each of the first and second selections of text in a temporarymemory, generating a first display interface displaying content from thetemporary memory, the first display interface including a selectablerepresentation of a comparison function, receiving a request to generatea comparison, comparing the content of the first selection of text andthe content of the second selection of text, and generating a seconddisplay interface that displays a comparison output indicating textualdifferences between the content of the first selection of text and thecontent of the second selection of text.
 2. The computer-based textcomparison system of claim 1, wherein the first electronic file is adifferent type of file than the second electronic file.
 3. Thecomputer-based text comparison system of claim 1, wherein at least oneof the first electronic file or the second electronic file is a web pagetype of file or an email message type of file.
 4. A computer-implementedmethod for comparing selections of text, the method comprising:receiving, via an electronic input interface, a first selection of textfrom within a first electronic file displayed on a first displayinterface, based on detected user input identifying at least a portionof text to create the first selection of text; receiving, via theelectronic input interface, a second selection of text from one of (a)the first electronic file displayed on the first display interface or(b) a second electronic file displayed on the first display interface ora second display interface, the receiving being based on detected userinput identifying at least another portion of the text to create thesecond selection of text; storing in a temporary memory, separately fromthe first electronic file and the second electronic file, each of thefirst and second selections of text; in response to receiving a requestfor a comparison function, comparing content of the first selection oftext with content of the second selection of text; and generating anddisplaying a comparison output, the comparison output indicating textualdifferences between the content of the first selection of text and thecontent of the second selection of text, the comparison output beingdisplayed on the first display interface, the second display interface,or a third display interface.
 5. The computer-implemented method ofclaim 4, further comprising including in the comparison output anindication that a portion of text was deleted when the portion of textis included in the first selection of text and the portion of text isnot included in the second selection of text.
 6. Thecomputer-implemented method of claim 4, further comprising including inthe comparison output an indication that a portion of text was insertedwhen the portion of text is not included in the first selection of textand the portion of text is included in the second selection of text. 7.The computer-implemented method of claim 4, further comprising receivingboth the first selection of text and the second selection of text fromthe first electronic file.
 8. The computer-implemented method of claim4, wherein the first electronic file is of a first type and the secondelectronic file is of a second type that differs from the first type. 9.A system for comparing text, comprising: a first buffer; a secondbuffer; a processor; and a memory coupled to the processor, the memorystoring instructions to direct the processor to perform operationscomprising: receiving a first selection of text from within anelectronic file based on detected user input identifying a portion oftext to create the first selection of text, storing in the first bufferthe first selection of text, receiving a second selection of text fromwithin the electronic file or a different electronic file, based ondetected user input identifying another portion of text to create thesecond selection of text, storing in the second buffer the secondselection of text, in response to receiving a request for a comparisonfunction, comparing the content of the first selection of text and thecontent of the second selection of text, and generating a displayinterface, wherein the display interface displays a comparison outputindicating textual differences between the content of the firstselection of text and the content of the second selection of text. 10.The system of claim 9, wherein the comparison output includes anindication that a portion of text was deleted when the portion of textis included in the first selection of text and the portion of text isnot included in the second selection of text.
 11. The system of claim 9,wherein the comparison output includes an indication that a portion oftext was inserted when the portion of text is not included in the firstselection of text and the portion of text is included in the secondselection of text.
 12. The system of claim 9, wherein the firstselection of text and the second selection of text are from a singleelectronic file.
 13. The system of claim 9, wherein the first selectionof text is from an electronic file of a first type and the secondselection of text is from an electronic file of a second type thatdiffers from the first type.
 14. The system of claim 9, wherein theprocessor is located remotely from one of the first buffer, the secondbuffer, and the memory.